package leetcode.medium.limit100;

import java.util.Arrays;

/**
 * @author yaoyao1.liu@zhaopin.com.cn
 * @since 2022-11-10 14:13
 **/
public class No59 {
    public static void main(String[] args) {
        No59 no59 = new No59();

        int[][] ints = no59.generateMatrix(0);
        System.out.println(Arrays.deepToString(ints));

    }

    public int[][] generateMatrix(int n) {
        int[][] ju = new int[n][n];
        int num = 1;
        int u = 0;
        int d = n - 1;
        int l = 0;
        int r = n - 1;
        while (true) {
            for (int i = l; i <= r; i++) {
                ju[u][i] = num++;
            }
            // 设置完第u层后往下一层
            if (++u > d) {// 控制第几层
                break;
            }
            // 设置第r列
            for (int i = u; i <= d; i++) {
                ju[i][r] = num++;
            }
            // 控制往前一列
            if (--r < l) {
                break;
            }
            // 设置第d层数据
            for (int i = r; i >= l; i--) {
                ju[d][i] = num++;
            }
            // 控制向上一层
            if (--d < u) {
                break;
            }
            // 设置第l列数据
            for (int i = d; i >= u; i--) {
                ju[i][l] = num++;
            }
            // 控制向有一列
            if (++l > r) {
                break;
            }
        }
        return ju;
    }
}
